package com.lc.service.impl;

import com.lc.bean.Menu;
import com.lc.bean.Role;
import com.lc.dao.MiddleDao;
import com.lc.dao.RoleDao;
import com.lc.dao.impl.MiddleDaoImpl;
import com.lc.dao.impl.RoleDaoImpl;
import com.lc.service.RoleService;

import java.util.List;

/**
 * @description:
 * @author: ManolinCoder
 * @time: 2021/8/24
 */
public class RoleServiceImpl implements RoleService {
    private RoleDao roleDao = new RoleDaoImpl();
    private MiddleDao middleDao = new MiddleDaoImpl();
    @Override
    public List<Role> getRoleList(int pageIndex, int pageSize) {
        return roleDao.getRoleList(pageIndex,pageSize);
    }

    @Override
    public int total() {
        return roleDao.total();
    }

    //新增权限角色(单纯新建一个角色并赋予它权限)
    @Override
    public int insertRole(String rolename, String state, String[] ids) {
        int successSign = 0;
        try {
            //新增角色表
            Role role = new Role();
            role.setRoleName(rolename);
            role.setRoleState(Integer.parseInt(state));
            int key = roleDao.insert(role);
            //新增中间表
            //菜单的id已经有了，还需要新增的角色的id
            middleDao.insertMiddle(key,ids);
            successSign = 1;
        }catch (Exception e){
            e.printStackTrace();
        }
        return successSign;
    }

    //新增角色的权限列表(删了之后更新了，不用新建角色，更新中间表即可)
    @Override
    public int insertRole(int roleId, String[] ids) {
        int successSign = 0;
        try {
            //新增中间表(注意权限列表可能为空，即ids可能为null，此时会出现空指针异常)
            if (ids != null){
                middleDao.insertMiddle(roleId,ids);
            }
            successSign = 1;//为空说明没有权限，不用更新权限列表
        }catch (Exception e){
            e.printStackTrace();
        }
        return successSign;
    }

    @Override
    public List<Integer> getRoleAndItsMenu(int roleId) {
        return roleDao.getRoleAndItsMenu(roleId);
    }

    @Override
    public int updateRole(Role role) {
        return roleDao.updateRole(role);
    }

    //删除角色所对应的菜单列表(中间表,如果该角色没有权限则会返回0)
    @Override
    public int delRoleMenu(int roleId) {
        return roleDao.delRoleMenu(roleId);
    }

    @Override
    public int delRole(int roleId) {
        return roleDao.delRole(roleId);
    }

    @Override
    public Role getRoleById(int roleId) {
        return roleDao.getRoleById(roleId);
    }
}
